﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;
using System.Windows.Forms;
using ComunesMGI.Enums;

namespace ComunesMGI.Controles
{
    public abstract class TablaCamposCampo
    {
        protected string _titulo;
        protected bool _requerido;
        protected Control _campo;
        protected ErrorProvider _handlerError;

        protected TablaCamposCampo(DataCampo dc)
        {
            _titulo = dc.Titulo;
            _requerido = dc.Requerido;
            _campo = CrearControl(dc);
            _campo.Name = "ctrlCampo" + _titulo;
            _campo.Anchor = AnchorStyles.Left;
        }

        public Control GetControl()
        {
            return _campo;
        }

        public DataCampo ObtenerDataCampo()
        {
            return new DataCampo(ObtenerTipoCampo(), _titulo, ObtenerValorCampo(), _requerido,ObtenerOpcionesCampo());
        }

        public void AgregarValidacion(ErrorProvider er)
        {
            _handlerError = er;
            _campo.Validating +=new System.ComponentModel.CancelEventHandler(Validar);
        }

        public bool IsValido()
        {
            return _handlerError.GetError(_campo) == "";
        }

        protected abstract Control CrearControl(DataCampo dc);
        protected abstract string ObtenerValorCampo();
        protected abstract CampoSharepoint ObtenerTipoCampo();
        protected abstract List<string> ObtenerOpcionesCampo();
        protected abstract void Validar(object sender, System.ComponentModel.CancelEventArgs e);
        
    }
}
